package cn.jit.ssm.web.controller.demo;


import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

/**
 * 为了测试前端表格分页组件DataTables
 * @author: Cecurio
 * @create: 2017-12-13 16:01
 **/
@RestController
@RequestMapping(value = "/demo2")
public class DemoController2 {
    @RequestMapping("tableDemoAjax")
    @ResponseBody
    public String tableDemoAjax(@RequestParam String aoData) {
        System.out.println("enter tableDemoAjax");
        JSONArray jsonarray = JSONArray.fromObject(aoData);
        String sEcho = null;      //记录操作的次数
        int iDisplayStart = 0;    // 起始索引
        int iDisplayLength = 0;   // 每页显示的行数


        //这里获取从前台传递过来的参数，从而确保是否分页、是否进行查询、是否排序等
        for (int i = 0; i < jsonarray.size(); i++) {
            JSONObject obj = (JSONObject) jsonarray.get(i);
            if (obj.get("name").equals("sEcho"))
                sEcho = obj.get("value").toString();

            if (obj.get("name").equals("iDisplayStart"))
                iDisplayStart = obj.getInt("value");

            if (obj.get("name").equals("iDisplayLength"))
                iDisplayLength = obj.getInt("value");
        }

        // 生成20条测试数据，在实际开发中这里的数据应该是根据分页、排序、查询等情况从数据库中进行查询的
        List<String[]> lst = new ArrayList<String[]>();
        for (int i = 0; i < 100; i++) {
            String[] d = { "firstname"+i,"lastname"+i,"address"+i };
            lst.add(d);
        }

        JSONObject getObj = new JSONObject();
        System.out.println("sEcho:"+sEcho);
        getObj.put("sEcho", sEcho);
        getObj.put("iTotalRecords", lst.size());          //实际的行数
        getObj.put("iTotalDisplayRecords", lst.size());   //显示的行数,这个要和上面写的一样

        getObj.put("aaData", lst.subList(iDisplayStart,iDisplayStart + iDisplayLength));//要以JSON格式返回，否则前台没法显示
        return getObj.toString();
    }

}
